package com.zhichat.infrastructure.Enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @ClassName: MsgTypeEnum
 * @Description: 消息类型Enum
 * @Author: 团长九哥 https://space.bilibili.com/602197686
 * @CreateDate: 2024/12/12 13:06
 */
@Getter
@AllArgsConstructor
public enum MsgTypeEnum {
    /**
     * 普通文本聊天消息
     */
    CHAT(1, "chat", "普通聊天消息"),
    /**
     * 媒体文件
     */
    MEDIA_FILE(2, "media_file", "媒体文件消息"),
    /**
     * ws初始化消息
     */
    ONLINE_INIT(3, "online_init", "用户上线，推送离线期间的消息"),
    /**
     * 好友申请
     */
    FRIEND_APPLY(4, "friend_apply", "好友申请消息"),
    /**
     * 添加好友打招呼消息
     */
    ADD_FRIEND(5, "你已添加了{}，现在可以开始聊天了", "添加好友打招呼消息"),
    /**
     * 群组创建成功消息
     */
    GROUP_CREATE(6, "{}创建成功", "群组创建成功消息"),
    /**
     * 加入群组
     */
    ADD_GROUP(7, "{}加入了群组", "加入群组消息"),
    /**
     * 退出群组
     */
    EXIT_GROUP(8, "{}退出了群组", "退出群组消息"),
    /**
     * 被踢出群组
     */
    KICK_GROUP(9, "{}被管理员移出了群组", "被管理员移出群组消息"),
    /**
     * 解散群组
     */
    GROUP_DISMISS(10, "群组已解散", "解散群聊消息"),
    /**
     * 更新群昵称
     */
    UPDATE_GROUP_NICKNAME(11, "{}更新群名称\"{}\"", "更新群昵称消息"),
    /**
     * 强制下线
     */
    FORCE_OFFLINE(12, "force_offline", "强制下线消息");

    private final Integer code;
    private final String initMsg;
    private final String desc;

    public static MsgTypeEnum getMsgTypeEnum(Integer code) {
        for (MsgTypeEnum msgTypeEnum : MsgTypeEnum.values()) {
            if (msgTypeEnum.getCode().equals(code)) {
                return msgTypeEnum;
            }
        }
        return null;
    }
}
